package day2.LC209;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {12, 28, 83, 4, 25, 26, 25, 2, 25, 25, 25, 12};
        int target=213;
        Solution solution = new Solution();
        solution.minSubArrayLen(target,nums);
    }
}


class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        //法一：超时
//        int min=nums.length+1;
//        for (int i = 0; i < nums.length; i++) {
//            int count=0;
//            for (int j = i; j < nums.length; j++) {
//                count+=nums[j];
//                if (count >= target) {
//                    min=j-i+1>min?min:j-i+1;
//                    break;
//                }
//            }
//        }
//        if (min == nums.length + 1) {
//            return 0;
//        }
//        return min;

        //法二：滑动窗口/双指针
        int j=0;//起始位置
        int min=nums.length+1;
        int sum=0;
        for (int i = 0; i < nums.length; i++) {//i是中止位置
            sum+=nums[i];
            while (sum >= target && j<=i) {
                min=i-j+1>min?min:i-j+1;
                sum-=nums[j];
                j++;
            }
        }
        if (min == nums.length + 1) {
            return 0;
        }
        return min;
    }
}